home *** CD-ROM | disk | FTP | other *** search
- //--------------------------------------------------------------------------------------------------
- //- fog.fx
- //--------------------------------------------------------------------------------------------------
-
- //--------------------------------------------------------------------------------------------------
- //- Shared Parameters
- //--------------------------------------------------------------------------------------------------
-
- #define FOG_ENABLE // debug trigger
-
- #ifdef FOG_ENABLE
- # ifndef FOG_DISABLE
- #define FOG_OPTION_ENABLE
- # endif
- #endif
-
- //#ifdef FOG_OPTION_ENABLE
- shared float4 FogColor = {0.92, 0.88, 0.84, 0.0};
- shared float FogNear = 5000;
- shared float FogFar = 10000.0;
- shared float FogWeak = 0.0;
- //#endif // FOG_OPTION_ENABLE
-
- //--------------------------------------------------------------------------------------------------
- //- Fog Macro, to keep one code for shaders... ###
- //- difficult to do things 'beautifull' sometime. |^&^?
- //- `=;
- //--------------------------------------------------------------------------------------------------
-
- #ifdef FOG_OPTION_ENABLE //*************************************************************************
-
- # define FOG_OPTION_PARAMETERS \
- FogEnable = true ; \
- FogColor = <FogColor>;\
- FogVertexMode = LINEAR; \
- FogTableMode = NONE ; \
- FogDensity = 1.0f ; \
- FogEnd = <FogFar> ; \
- FogStart = <FogNear>
-
- # define FOG_OPTION_VERTEX_FIELD \
- float Fog : FOG;
-
- # define FOG_OPTION_VERTEX_FIELD_HACK(TARGET) \
- float4 Hack : TARGET;
-
- # define FOG_OPTION_COMPUTE(Output, Position) \
- FOG_LINEAR_OPTION_COMPUTE(Output, Position)
-
- # define FOG_LINEAR_OPTION_COMPUTE(Output, Position) \
- Output.Fog = fog_linear(Position)
-
- # define FOG_OPTION FOG_OPTION_ON
- # define FOG_OPTION_ON(Instr) Instr
- # define FOG_OPTION_OFF(Instr)
-
- #endif // FOG_OPTION_ENABLE *************************************************************************
-
- #ifndef FOG_OPTION_ENABLE //*************************************************************************
-
- # define FOG_OPTION_PARAMETERS \
- FogEnable = false
-
- # define FOG_OPTION_VERTEX_FIELD
- # define FOG_OPTION_VERTEX_FIELD_HACK(void)
-
- # define FOG_OPTION_COMPUTE(NothingToDo, NothingToDoAgain)
-
- # define FOG_OPTION(Instr)
- # define FOG_OPTION_ON(Instr)
-
- # define FOG_OPTION_OFF(Instr) Instr
-
- #endif // ! FOG_OPTION_ENABLE *************************************************************************
-
-
- #ifdef FOG_OPTION_ENABLE
- //------------------------------------------------------------------------------------------------------
- //------------------------------------------------------------------------------------------------------
- //------------------------------------------------------------------------------------------------------
-
- float fog_linear(const float4 outputPosition) : FOG;
-
- //------------------------------------------------------------------------------------------------------
- //------------------------------------------------------------------------------------------------------
- //------------------------------------------------------------------------------------------------------
-
- float fog_linear(const float4 outputPosition) : FOG
- {
- float dist = outputPosition.z;
- dist = clamp((FogFar - dist) / (FogFar - FogNear), 0.0f, 1.0f);
- return clamp(dist + FogWeak, 0.0, 1.0);
- }
-
- #endif // FOG_OPTION_ENABLE
-
-